#!/usr/bin/env bash
#
# Run unit tests
#
# TESTFLAGS - add additional test flags. Ex:
#
#   TESTFLAGS="-v -run TestBuild" hack/test/unit
#
# TESTDIRS - run tests for specified packages. Ex:
#
#    TESTDIRS="./pkg/term" hack/test/unit
#
set -eu -o pipefail

TESTFLAGS+=" -test.timeout=${TIMEOUT:-5m}"
BUILDFLAGS=( -tags "netgo seccomp libdm_no_deferred_remove" )
TESTDIRS="${TESTDIRS:-"./..."}"

exclude_paths="/vendor/|/integration"
pkg_list=$(go list $TESTDIRS | grep -vE "($exclude_paths)")

for pkg in $pkg_list; do
    go test "${BUILDFLAGS[@]}" \
        -cover \
        -coverprofile=profile.out \
        -covermode=atomic \
        $TESTFLAGS \
        "${pkg}"

    if test -f profile.out; then
        cat profile.out >> coverage.txt
        rm profile.out
    fi
done
